1. Technical Field
The invention relates to passing data between named objects on a data processing system and more particularly to passing data between objects located in different virtual address space domains on the data processing system. Still more particularly, the invention relates to the transparent association of facilities to transfer data between such objects without other modification of a source object or a target object.
2. Description of the Related Art
A virtual machine is a functional simulation of a computer and its associated devices. A plurality of virtual machines may be executed concurrently on a computer system under the control of a suitable operating system. For example, microcomputer systems based upon either the Intel 80386 microprocessor or the 80486 microprocessor and utilizing an OS/2.RTM. version 2.0 operating system available from International Business Machines Corporation have considerable capacity for executing multiple concurrent processes. Such systems can support emulation of a plurality of concurrent virtual machines, particularly virtual disk operating system machines ("VDMs"). Disk operating systems ("DOS") exist in several versions, such as PC-DOS used on early IBM personal computers and MS-DOS (numerous versions) used on personal computers designed for compatibility with the Industry Standard Architecture. (MS-DOS is a registered trademark of Microsoft, Inc.).
To the user, one desktop personal computer can appear to simultaneously function as two or more Intel 8086 microprocessor based machines utilizing distinct DOS versions, e.g. MS-DOS versions 2.0 or 3.2. This allows the user to run DOS version specific application programs, such as games, word processing programs, or other applications by running the appropriate DOS version on a VDM.
Each virtual machine is an example of a process, or collection of processes, which may be displayed to the user on the system display device in its own window or represented as a icon. A process is current when allocated some physical location in computer memory. The term "computer memory" is used here in reference to program addressable storage from which instructions and other data can be loaded directly into registers of the central processing unit for subsequent execution or other utilization.
Where a plurality of processes are concurrent on a computer, or where insufficient space exists in a computer memory to satisfy the addressing capability of the computers operating system, virtual storage is employed to satisfy the demands for memory of the various current processes. In virtual storage the concepts of address space and actual physical computer memory locations are separated. In a classical virtual storage system, there exist a fixed number of actual, physical words of memory. The address space of the computer, or VDM, is mapped onto physical computer memory by translating addresses in the virtual address space into physical memory locations. Where available computer memory is too small to provide an actual location for each address, a portion of the address space resides outside of computer memory in an auxiliary memory device.
Conventional virtual storage systems determine when a portion of a virtual storage address space (e.g. a page of memory) addressed by a virtual machine is not physically present in computer memory. The storage system then determines the location of the desired data in auxiliary memory, loads the data into computer memory and modifies the memory map to reflect that the virtual storage addresses accessed now relate to locations in computer memory.
Virtual storage may be regarded as addressable main storage by the user of a computer in which virtual addresses are mapped into real addresses of the computer memory or into auxiliary memory. The size of virtual storage is limited only by the addressing scheme of the computer and its operating system and by the amount of auxiliary memory available, such a disk drives or tapes. Thus virtual storage is not limited by the actual number of physical locations in computer memory. The practical implication of this arrangement is that some of the instructions and the data for a process will not physically be in computer memory, even though they may be addressed as though they were.
Each current VDM on a computer has its own virtual storage address space or domain. A useful feature to provide with a plurality of concurrent processes is the ability to transfer data from one domain to another domain. Traditional message passing systems provide for establishment of a "session" between source (sending) and target (receiving) objects. A session is the association of facilities necessary for establishing, maintaining and releasing connections for communications between objects.
During the phase of establishing communications, objects locate one another within a domain (often with the assistance of system services provided by the operating system). Typically a form of broadcast message is sent by a source object to all possible target objects within the domain. Some possible target objects will respond to the broadcast message with an acknowledge message, which may be positive or negative. Some objects will not respond. A list of objects acknowledging the broadcast message positively will be generated and the source object will be joined with one or more acknowledging objects in sessions as appropriate.
The next phase of message passing is a transaction phase. One or more transactions, each marking a message may occur in both directions of a session between the source and a target object. No direct addressing of objects occurs in this phase, nor are broadcast messages used.
Finally, termination of a session must be provided for. By closing a session, the facilities required for establishing and maintaining the session, such as computer memory, are released. Any new session of course requires repeating the procedure from the beginning with a broadcast message from a new source object.
To establish a session between objects they must lie in one domain. If the objects cannot "locate" one another no session can be established. The limits the ability of objects in different domains to communicate with one another.
Objects generated by numerous prior art application programs include the ability to establish intradomain sessions. There also exist methods for bridging domains to allow transfer of data between domains. However, many prior art application programs, suitable for execution on VDMs, generate objects not capable of recognizing the tools provided by the underlying operating system for establishing such bridges.